﻿using Mygame;//引用命名空间
#region     知识点一   命名空间基本概念
//概念
//命名空间是用来组织和重用代码的
//作用
//就像是一个工具包，类就是一件一件的工具，申明在命名空间中
#endregion

#region     知识点二   命名空间的使用
//基本语法
//namespace 命名空间名
//{
//   类
//   类
//}
namespace Mygame
{
    class Gameobject
    {

    }
}
namespace Mygame
{
    //命名空间可以重名，但是相同名字里的类不能重名
    //class Gameobject
    //{

    //}
    //但是能继承
    class Player : Gameobject
    {

    }
}
#endregion

#region     知识点四   不同命名空间中允许有同名类
namespace Yougame
{
    class Gameobject
    {

    }
}
#endregion

#region     知识点五   命名空间可以包裹命名空间
namespace Myname
{
    namespace UI
    {
        class Image
        {

        }
    }
    namespace Game
    {
        class Image
        {

        }
    }
}
#endregion

#region     知识点六   关于修饰类的访问修饰符
//public -- 公共
//internal -- 只能在该程序集中使用（命名空间的类默认为internal）
//abstract -- 抽象类
//sealed -- 密封类
//partial -- 分部类
#endregion
namespace los22
{
    
    internal class class22
    {
        static void Main(string[] args)
        {
            Console.WriteLine("命名空间");
            #region     知识点三   不同命名空间之间相互使用 需要引用命名空间或指明出处
            //引用
            Gameobject g = new Gameobject();
            //指明出处
            Mygame.Gameobject h = new  Mygame.Gameobject();
            //这俩有一个就行

            Yougame.Gameobject g2 = new Yougame.Gameobject();

            Myname.UI.Image game = new Myname.UI.Image();
            Myname.Game.Image image = new Myname.Game.Image();
            #endregion
        }
        //总结：
        //1.命名空间是个工具包 用来管理类的
        //2.不同命名空间中可以有同名类
        //3.不同命名空间中相互使用 需要using引用命名空间 或者 指明出处
        //4.命名空间可以包裹命名空间
    }
}
